package cn.francis.handler;

import com.qfedu.agro.common.ResultInfo;
import com.qfedu.agro.common.exception.CustomException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * Name: GlobalExceptionHandler
 * Package: cn.francis.handler
 * Date: 2024/10/26 - 16:47
 * Description:
 *
 * @author Junhui Zhang
 * @version v1.0
 */

@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * mysql字段重复，在有唯一约束时抛出的异常
     * @param e 重复键异常
     * @return ResultInfo
     */
    @ExceptionHandler(DuplicateKeyException.class)
    public ResultInfo handleDuplicateName(DuplicateKeyException e) {
        return ResultInfo.error("名称不能重复");
    }

    /**
     * 处理系统异常,不能让用户知道异常具体情况
     * @param e 异常
     * @return ResultInfo
     */
    @ExceptionHandler(Exception.class)
    public ResultInfo handleSystemException(Exception e) {
        return ResultInfo.error("服务器开小差了，请稍后重试.....");
    }

    /**
     * 处理业务异常
     * @param e 异常
     * @return ResultInfo
     */
    @ExceptionHandler(CustomException.class)
    public ResultInfo handleCustomException(Exception e) {
        return ResultInfo.error(e.getMessage());
    }
}
